# -*- coding: utf-8 -*-
# 定义项目的应用实例，同时还有一些辅助管理应用的任务
#
import os

from app import create_app, db

# if __name__ == '__main__':
#     """
#     启动方式一：通过python的main方法启动flask
#     """
#     flasky = create_app(config_name='default')
#     db.create_all(app=flasky)
#     flasky.run()

# 启动方式二： 再此写初始化的方法然后在命令行终端直接flask run命令启动
from app.models import Role, User

flasky = create_app(os.getenv('FLASK_CONFIG') or 'default')
flasky.debug = True
db.create_all(app=flasky)


@flasky.shell_context_processor
def make_shell_context():
    return dict(db=db, User=User, Role=Role)


# @app.cli.command装饰器自定义命令，被装饰的函数名就是命令
# 函数的文档字符会显示在帮助信息文档中
@flasky.cli.command()
def test_flasky():
    """
    单元测试验证flasky项目
    :return:
    """
    import unittest
    tests = unittest.TestLoader.discover('tests')
    unittest.TextTestRunner(verbosity=2).run(tests)
